/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package it.apuliait.model;

import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ProxyUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.model.BaseModel;
import com.liferay.portal.model.impl.BaseModelImpl;
import com.liferay.portal.util.PortalUtil;

import it.apuliait.service.ClpSerializer;
import it.apuliait.service.DocumentoLocalServiceUtil;

import java.io.Serializable;

import java.lang.reflect.Method;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Donatello
 */
public class DocumentoClp extends BaseModelImpl<Documento> implements Documento {
	public DocumentoClp() {
	}

	@Override
	public Class<?> getModelClass() {
		return Documento.class;
	}

	@Override
	public String getModelClassName() {
		return Documento.class.getName();
	}

	@Override
	public long getPrimaryKey() {
		return _documentoId;
	}

	@Override
	public void setPrimaryKey(long primaryKey) {
		setDocumentoId(primaryKey);
	}

	@Override
	public Serializable getPrimaryKeyObj() {
		return _documentoId;
	}

	@Override
	public void setPrimaryKeyObj(Serializable primaryKeyObj) {
		setPrimaryKey(((Long)primaryKeyObj).longValue());
	}

	@Override
	public Map<String, Object> getModelAttributes() {
		Map<String, Object> attributes = new HashMap<String, Object>();

		attributes.put("documentoId", getDocumentoId());
		attributes.put("trasmittenteIDFK", getTrasmittenteIDFK());
		attributes.put("riceventeIDFK", getRiceventeIDFK());
		attributes.put("userId", getUserId());
		attributes.put("nomeDocumento", getNomeDocumento());
		attributes.put("statoDocumento", getStatoDocumento());
		attributes.put("tipoDocumento", getTipoDocumento());
		attributes.put("divisa", getDivisa());
		attributes.put("dataDocumento", getDataDocumento());
		attributes.put("numeroDocumento", getNumeroDocumento());
		attributes.put("progressivoInvio", getProgressivoInvio());
		attributes.put("tipoRitenuta", getTipoRitenuta());
		attributes.put("importoRitenuta", getImportoRitenuta());
		attributes.put("aliquotaRitenuta", getAliquotaRitenuta());
		attributes.put("causalePagamento", getCausalePagamento());
		attributes.put("importoTotale", getImportoTotale());
		attributes.put("arrotondamento", getArrotondamento());
		attributes.put("causale", getCausale());
		attributes.put("articolo73", getArticolo73());
		attributes.put("bolloVirtuale", getBolloVirtuale());
		attributes.put("importoBolloVirtuale", getImportoBolloVirtuale());
		attributes.put("cassaPrevidenziale", getCassaPrevidenziale());
		attributes.put("aliquotaCassa", getAliquotaCassa());
		attributes.put("aliquotaIvaCassa", getAliquotaIvaCassa());
		attributes.put("ritenutaCassa", getRitenutaCassa());
		attributes.put("naturaCassa", getNaturaCassa());
		attributes.put("imponibileCassa", getImponibileCassa());
		attributes.put("importoContributoCassa", getImportoContributoCassa());
		attributes.put("tipoScontoMaggiorazione", getTipoScontoMaggiorazione());
		attributes.put("percentualeScontoMaggiorazione",
			getPercentualeScontoMaggiorazione());
		attributes.put("importoScontoMaggiorazione",
			getImportoScontoMaggiorazione());
		attributes.put("esigibilitaIva", getEsigibilitaIva());

		return attributes;
	}

	@Override
	public void setModelAttributes(Map<String, Object> attributes) {
		Long documentoId = (Long)attributes.get("documentoId");

		if (documentoId != null) {
			setDocumentoId(documentoId);
		}

		Long trasmittenteIDFK = (Long)attributes.get("trasmittenteIDFK");

		if (trasmittenteIDFK != null) {
			setTrasmittenteIDFK(trasmittenteIDFK);
		}

		Long riceventeIDFK = (Long)attributes.get("riceventeIDFK");

		if (riceventeIDFK != null) {
			setRiceventeIDFK(riceventeIDFK);
		}

		Long userId = (Long)attributes.get("userId");

		if (userId != null) {
			setUserId(userId);
		}

		String nomeDocumento = (String)attributes.get("nomeDocumento");

		if (nomeDocumento != null) {
			setNomeDocumento(nomeDocumento);
		}

		String statoDocumento = (String)attributes.get("statoDocumento");

		if (statoDocumento != null) {
			setStatoDocumento(statoDocumento);
		}

		String tipoDocumento = (String)attributes.get("tipoDocumento");

		if (tipoDocumento != null) {
			setTipoDocumento(tipoDocumento);
		}

		String divisa = (String)attributes.get("divisa");

		if (divisa != null) {
			setDivisa(divisa);
		}

		String dataDocumento = (String)attributes.get("dataDocumento");

		if (dataDocumento != null) {
			setDataDocumento(dataDocumento);
		}

		String numeroDocumento = (String)attributes.get("numeroDocumento");

		if (numeroDocumento != null) {
			setNumeroDocumento(numeroDocumento);
		}

		String progressivoInvio = (String)attributes.get("progressivoInvio");

		if (progressivoInvio != null) {
			setProgressivoInvio(progressivoInvio);
		}

		String tipoRitenuta = (String)attributes.get("tipoRitenuta");

		if (tipoRitenuta != null) {
			setTipoRitenuta(tipoRitenuta);
		}

		String importoRitenuta = (String)attributes.get("importoRitenuta");

		if (importoRitenuta != null) {
			setImportoRitenuta(importoRitenuta);
		}

		String aliquotaRitenuta = (String)attributes.get("aliquotaRitenuta");

		if (aliquotaRitenuta != null) {
			setAliquotaRitenuta(aliquotaRitenuta);
		}

		String causalePagamento = (String)attributes.get("causalePagamento");

		if (causalePagamento != null) {
			setCausalePagamento(causalePagamento);
		}

		String importoTotale = (String)attributes.get("importoTotale");

		if (importoTotale != null) {
			setImportoTotale(importoTotale);
		}

		String arrotondamento = (String)attributes.get("arrotondamento");

		if (arrotondamento != null) {
			setArrotondamento(arrotondamento);
		}

		String causale = (String)attributes.get("causale");

		if (causale != null) {
			setCausale(causale);
		}

		String articolo73 = (String)attributes.get("articolo73");

		if (articolo73 != null) {
			setArticolo73(articolo73);
		}

		String bolloVirtuale = (String)attributes.get("bolloVirtuale");

		if (bolloVirtuale != null) {
			setBolloVirtuale(bolloVirtuale);
		}

		String importoBolloVirtuale = (String)attributes.get(
				"importoBolloVirtuale");

		if (importoBolloVirtuale != null) {
			setImportoBolloVirtuale(importoBolloVirtuale);
		}

		String cassaPrevidenziale = (String)attributes.get("cassaPrevidenziale");

		if (cassaPrevidenziale != null) {
			setCassaPrevidenziale(cassaPrevidenziale);
		}

		String aliquotaCassa = (String)attributes.get("aliquotaCassa");

		if (aliquotaCassa != null) {
			setAliquotaCassa(aliquotaCassa);
		}

		String aliquotaIvaCassa = (String)attributes.get("aliquotaIvaCassa");

		if (aliquotaIvaCassa != null) {
			setAliquotaIvaCassa(aliquotaIvaCassa);
		}

		String ritenutaCassa = (String)attributes.get("ritenutaCassa");

		if (ritenutaCassa != null) {
			setRitenutaCassa(ritenutaCassa);
		}

		String naturaCassa = (String)attributes.get("naturaCassa");

		if (naturaCassa != null) {
			setNaturaCassa(naturaCassa);
		}

		String imponibileCassa = (String)attributes.get("imponibileCassa");

		if (imponibileCassa != null) {
			setImponibileCassa(imponibileCassa);
		}

		String importoContributoCassa = (String)attributes.get(
				"importoContributoCassa");

		if (importoContributoCassa != null) {
			setImportoContributoCassa(importoContributoCassa);
		}

		String tipoScontoMaggiorazione = (String)attributes.get(
				"tipoScontoMaggiorazione");

		if (tipoScontoMaggiorazione != null) {
			setTipoScontoMaggiorazione(tipoScontoMaggiorazione);
		}

		String percentualeScontoMaggiorazione = (String)attributes.get(
				"percentualeScontoMaggiorazione");

		if (percentualeScontoMaggiorazione != null) {
			setPercentualeScontoMaggiorazione(percentualeScontoMaggiorazione);
		}

		String importoScontoMaggiorazione = (String)attributes.get(
				"importoScontoMaggiorazione");

		if (importoScontoMaggiorazione != null) {
			setImportoScontoMaggiorazione(importoScontoMaggiorazione);
		}

		String esigibilitaIva = (String)attributes.get("esigibilitaIva");

		if (esigibilitaIva != null) {
			setEsigibilitaIva(esigibilitaIva);
		}
	}

	@Override
	public long getDocumentoId() {
		return _documentoId;
	}

	@Override
	public void setDocumentoId(long documentoId) {
		_documentoId = documentoId;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setDocumentoId", long.class);

				method.invoke(_documentoRemoteModel, documentoId);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public long getTrasmittenteIDFK() {
		return _trasmittenteIDFK;
	}

	@Override
	public void setTrasmittenteIDFK(long trasmittenteIDFK) {
		_trasmittenteIDFK = trasmittenteIDFK;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setTrasmittenteIDFK",
						long.class);

				method.invoke(_documentoRemoteModel, trasmittenteIDFK);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public long getRiceventeIDFK() {
		return _riceventeIDFK;
	}

	@Override
	public void setRiceventeIDFK(long riceventeIDFK) {
		_riceventeIDFK = riceventeIDFK;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setRiceventeIDFK", long.class);

				method.invoke(_documentoRemoteModel, riceventeIDFK);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public long getUserId() {
		return _userId;
	}

	@Override
	public void setUserId(long userId) {
		_userId = userId;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setUserId", long.class);

				method.invoke(_documentoRemoteModel, userId);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getUserUuid() throws SystemException {
		return PortalUtil.getUserValue(getUserId(), "uuid", _userUuid);
	}

	@Override
	public void setUserUuid(String userUuid) {
		_userUuid = userUuid;
	}

	@Override
	public String getNomeDocumento() {
		return _nomeDocumento;
	}

	@Override
	public void setNomeDocumento(String nomeDocumento) {
		_nomeDocumento = nomeDocumento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setNomeDocumento", String.class);

				method.invoke(_documentoRemoteModel, nomeDocumento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getStatoDocumento() {
		return _statoDocumento;
	}

	@Override
	public void setStatoDocumento(String statoDocumento) {
		_statoDocumento = statoDocumento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setStatoDocumento",
						String.class);

				method.invoke(_documentoRemoteModel, statoDocumento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getTipoDocumento() {
		return _tipoDocumento;
	}

	@Override
	public void setTipoDocumento(String tipoDocumento) {
		_tipoDocumento = tipoDocumento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setTipoDocumento", String.class);

				method.invoke(_documentoRemoteModel, tipoDocumento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getDivisa() {
		return _divisa;
	}

	@Override
	public void setDivisa(String divisa) {
		_divisa = divisa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setDivisa", String.class);

				method.invoke(_documentoRemoteModel, divisa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getDataDocumento() {
		return _dataDocumento;
	}

	@Override
	public void setDataDocumento(String dataDocumento) {
		_dataDocumento = dataDocumento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setDataDocumento", String.class);

				method.invoke(_documentoRemoteModel, dataDocumento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getNumeroDocumento() {
		return _numeroDocumento;
	}

	@Override
	public void setNumeroDocumento(String numeroDocumento) {
		_numeroDocumento = numeroDocumento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setNumeroDocumento",
						String.class);

				method.invoke(_documentoRemoteModel, numeroDocumento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getProgressivoInvio() {
		return _progressivoInvio;
	}

	@Override
	public void setProgressivoInvio(String progressivoInvio) {
		_progressivoInvio = progressivoInvio;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setProgressivoInvio",
						String.class);

				method.invoke(_documentoRemoteModel, progressivoInvio);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getTipoRitenuta() {
		return _tipoRitenuta;
	}

	@Override
	public void setTipoRitenuta(String tipoRitenuta) {
		_tipoRitenuta = tipoRitenuta;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setTipoRitenuta", String.class);

				method.invoke(_documentoRemoteModel, tipoRitenuta);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImportoRitenuta() {
		return _importoRitenuta;
	}

	@Override
	public void setImportoRitenuta(String importoRitenuta) {
		_importoRitenuta = importoRitenuta;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImportoRitenuta",
						String.class);

				method.invoke(_documentoRemoteModel, importoRitenuta);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getAliquotaRitenuta() {
		return _aliquotaRitenuta;
	}

	@Override
	public void setAliquotaRitenuta(String aliquotaRitenuta) {
		_aliquotaRitenuta = aliquotaRitenuta;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setAliquotaRitenuta",
						String.class);

				method.invoke(_documentoRemoteModel, aliquotaRitenuta);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getCausalePagamento() {
		return _causalePagamento;
	}

	@Override
	public void setCausalePagamento(String causalePagamento) {
		_causalePagamento = causalePagamento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setCausalePagamento",
						String.class);

				method.invoke(_documentoRemoteModel, causalePagamento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImportoTotale() {
		return _importoTotale;
	}

	@Override
	public void setImportoTotale(String importoTotale) {
		_importoTotale = importoTotale;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImportoTotale", String.class);

				method.invoke(_documentoRemoteModel, importoTotale);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getArrotondamento() {
		return _arrotondamento;
	}

	@Override
	public void setArrotondamento(String arrotondamento) {
		_arrotondamento = arrotondamento;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setArrotondamento",
						String.class);

				method.invoke(_documentoRemoteModel, arrotondamento);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getCausale() {
		return _causale;
	}

	@Override
	public void setCausale(String causale) {
		_causale = causale;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setCausale", String.class);

				method.invoke(_documentoRemoteModel, causale);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getArticolo73() {
		return _articolo73;
	}

	@Override
	public void setArticolo73(String articolo73) {
		_articolo73 = articolo73;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setArticolo73", String.class);

				method.invoke(_documentoRemoteModel, articolo73);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getBolloVirtuale() {
		return _bolloVirtuale;
	}

	@Override
	public void setBolloVirtuale(String bolloVirtuale) {
		_bolloVirtuale = bolloVirtuale;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setBolloVirtuale", String.class);

				method.invoke(_documentoRemoteModel, bolloVirtuale);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImportoBolloVirtuale() {
		return _importoBolloVirtuale;
	}

	@Override
	public void setImportoBolloVirtuale(String importoBolloVirtuale) {
		_importoBolloVirtuale = importoBolloVirtuale;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImportoBolloVirtuale",
						String.class);

				method.invoke(_documentoRemoteModel, importoBolloVirtuale);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getCassaPrevidenziale() {
		return _cassaPrevidenziale;
	}

	@Override
	public void setCassaPrevidenziale(String cassaPrevidenziale) {
		_cassaPrevidenziale = cassaPrevidenziale;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setCassaPrevidenziale",
						String.class);

				method.invoke(_documentoRemoteModel, cassaPrevidenziale);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getAliquotaCassa() {
		return _aliquotaCassa;
	}

	@Override
	public void setAliquotaCassa(String aliquotaCassa) {
		_aliquotaCassa = aliquotaCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setAliquotaCassa", String.class);

				method.invoke(_documentoRemoteModel, aliquotaCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getAliquotaIvaCassa() {
		return _aliquotaIvaCassa;
	}

	@Override
	public void setAliquotaIvaCassa(String aliquotaIvaCassa) {
		_aliquotaIvaCassa = aliquotaIvaCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setAliquotaIvaCassa",
						String.class);

				method.invoke(_documentoRemoteModel, aliquotaIvaCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getRitenutaCassa() {
		return _ritenutaCassa;
	}

	@Override
	public void setRitenutaCassa(String ritenutaCassa) {
		_ritenutaCassa = ritenutaCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setRitenutaCassa", String.class);

				method.invoke(_documentoRemoteModel, ritenutaCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getNaturaCassa() {
		return _naturaCassa;
	}

	@Override
	public void setNaturaCassa(String naturaCassa) {
		_naturaCassa = naturaCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setNaturaCassa", String.class);

				method.invoke(_documentoRemoteModel, naturaCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImponibileCassa() {
		return _imponibileCassa;
	}

	@Override
	public void setImponibileCassa(String imponibileCassa) {
		_imponibileCassa = imponibileCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImponibileCassa",
						String.class);

				method.invoke(_documentoRemoteModel, imponibileCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImportoContributoCassa() {
		return _importoContributoCassa;
	}

	@Override
	public void setImportoContributoCassa(String importoContributoCassa) {
		_importoContributoCassa = importoContributoCassa;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImportoContributoCassa",
						String.class);

				method.invoke(_documentoRemoteModel, importoContributoCassa);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getTipoScontoMaggiorazione() {
		return _tipoScontoMaggiorazione;
	}

	@Override
	public void setTipoScontoMaggiorazione(String tipoScontoMaggiorazione) {
		_tipoScontoMaggiorazione = tipoScontoMaggiorazione;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setTipoScontoMaggiorazione",
						String.class);

				method.invoke(_documentoRemoteModel, tipoScontoMaggiorazione);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getPercentualeScontoMaggiorazione() {
		return _percentualeScontoMaggiorazione;
	}

	@Override
	public void setPercentualeScontoMaggiorazione(
		String percentualeScontoMaggiorazione) {
		_percentualeScontoMaggiorazione = percentualeScontoMaggiorazione;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setPercentualeScontoMaggiorazione",
						String.class);

				method.invoke(_documentoRemoteModel,
					percentualeScontoMaggiorazione);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getImportoScontoMaggiorazione() {
		return _importoScontoMaggiorazione;
	}

	@Override
	public void setImportoScontoMaggiorazione(String importoScontoMaggiorazione) {
		_importoScontoMaggiorazione = importoScontoMaggiorazione;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setImportoScontoMaggiorazione",
						String.class);

				method.invoke(_documentoRemoteModel, importoScontoMaggiorazione);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	@Override
	public String getEsigibilitaIva() {
		return _esigibilitaIva;
	}

	@Override
	public void setEsigibilitaIva(String esigibilitaIva) {
		_esigibilitaIva = esigibilitaIva;

		if (_documentoRemoteModel != null) {
			try {
				Class<?> clazz = _documentoRemoteModel.getClass();

				Method method = clazz.getMethod("setEsigibilitaIva",
						String.class);

				method.invoke(_documentoRemoteModel, esigibilitaIva);
			}
			catch (Exception e) {
				throw new UnsupportedOperationException(e);
			}
		}
	}

	public BaseModel<?> getDocumentoRemoteModel() {
		return _documentoRemoteModel;
	}

	public void setDocumentoRemoteModel(BaseModel<?> documentoRemoteModel) {
		_documentoRemoteModel = documentoRemoteModel;
	}

	public Object invokeOnRemoteModel(String methodName,
		Class<?>[] parameterTypes, Object[] parameterValues)
		throws Exception {
		Object[] remoteParameterValues = new Object[parameterValues.length];

		for (int i = 0; i < parameterValues.length; i++) {
			if (parameterValues[i] != null) {
				remoteParameterValues[i] = ClpSerializer.translateInput(parameterValues[i]);
			}
		}

		Class<?> remoteModelClass = _documentoRemoteModel.getClass();

		ClassLoader remoteModelClassLoader = remoteModelClass.getClassLoader();

		Class<?>[] remoteParameterTypes = new Class[parameterTypes.length];

		for (int i = 0; i < parameterTypes.length; i++) {
			if (parameterTypes[i].isPrimitive()) {
				remoteParameterTypes[i] = parameterTypes[i];
			}
			else {
				String parameterTypeName = parameterTypes[i].getName();

				remoteParameterTypes[i] = remoteModelClassLoader.loadClass(parameterTypeName);
			}
		}

		Method method = remoteModelClass.getMethod(methodName,
				remoteParameterTypes);

		Object returnValue = method.invoke(_documentoRemoteModel,
				remoteParameterValues);

		if (returnValue != null) {
			returnValue = ClpSerializer.translateOutput(returnValue);
		}

		return returnValue;
	}

	@Override
	public void persist() throws SystemException {
		if (this.isNew()) {
			DocumentoLocalServiceUtil.addDocumento(this);
		}
		else {
			DocumentoLocalServiceUtil.updateDocumento(this);
		}
	}

	@Override
	public Documento toEscapedModel() {
		return (Documento)ProxyUtil.newProxyInstance(Documento.class.getClassLoader(),
			new Class[] { Documento.class }, new AutoEscapeBeanHandler(this));
	}

	@Override
	public Object clone() {
		DocumentoClp clone = new DocumentoClp();

		clone.setDocumentoId(getDocumentoId());
		clone.setTrasmittenteIDFK(getTrasmittenteIDFK());
		clone.setRiceventeIDFK(getRiceventeIDFK());
		clone.setUserId(getUserId());
		clone.setNomeDocumento(getNomeDocumento());
		clone.setStatoDocumento(getStatoDocumento());
		clone.setTipoDocumento(getTipoDocumento());
		clone.setDivisa(getDivisa());
		clone.setDataDocumento(getDataDocumento());
		clone.setNumeroDocumento(getNumeroDocumento());
		clone.setProgressivoInvio(getProgressivoInvio());
		clone.setTipoRitenuta(getTipoRitenuta());
		clone.setImportoRitenuta(getImportoRitenuta());
		clone.setAliquotaRitenuta(getAliquotaRitenuta());
		clone.setCausalePagamento(getCausalePagamento());
		clone.setImportoTotale(getImportoTotale());
		clone.setArrotondamento(getArrotondamento());
		clone.setCausale(getCausale());
		clone.setArticolo73(getArticolo73());
		clone.setBolloVirtuale(getBolloVirtuale());
		clone.setImportoBolloVirtuale(getImportoBolloVirtuale());
		clone.setCassaPrevidenziale(getCassaPrevidenziale());
		clone.setAliquotaCassa(getAliquotaCassa());
		clone.setAliquotaIvaCassa(getAliquotaIvaCassa());
		clone.setRitenutaCassa(getRitenutaCassa());
		clone.setNaturaCassa(getNaturaCassa());
		clone.setImponibileCassa(getImponibileCassa());
		clone.setImportoContributoCassa(getImportoContributoCassa());
		clone.setTipoScontoMaggiorazione(getTipoScontoMaggiorazione());
		clone.setPercentualeScontoMaggiorazione(getPercentualeScontoMaggiorazione());
		clone.setImportoScontoMaggiorazione(getImportoScontoMaggiorazione());
		clone.setEsigibilitaIva(getEsigibilitaIva());

		return clone;
	}

	@Override
	public int compareTo(Documento documento) {
		long primaryKey = documento.getPrimaryKey();

		if (getPrimaryKey() < primaryKey) {
			return -1;
		}
		else if (getPrimaryKey() > primaryKey) {
			return 1;
		}
		else {
			return 0;
		}
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}

		if (!(obj instanceof DocumentoClp)) {
			return false;
		}

		DocumentoClp documento = (DocumentoClp)obj;

		long primaryKey = documento.getPrimaryKey();

		if (getPrimaryKey() == primaryKey) {
			return true;
		}
		else {
			return false;
		}
	}

	@Override
	public int hashCode() {
		return (int)getPrimaryKey();
	}

	@Override
	public String toString() {
		StringBundler sb = new StringBundler(65);

		sb.append("{documentoId=");
		sb.append(getDocumentoId());
		sb.append(", trasmittenteIDFK=");
		sb.append(getTrasmittenteIDFK());
		sb.append(", riceventeIDFK=");
		sb.append(getRiceventeIDFK());
		sb.append(", userId=");
		sb.append(getUserId());
		sb.append(", nomeDocumento=");
		sb.append(getNomeDocumento());
		sb.append(", statoDocumento=");
		sb.append(getStatoDocumento());
		sb.append(", tipoDocumento=");
		sb.append(getTipoDocumento());
		sb.append(", divisa=");
		sb.append(getDivisa());
		sb.append(", dataDocumento=");
		sb.append(getDataDocumento());
		sb.append(", numeroDocumento=");
		sb.append(getNumeroDocumento());
		sb.append(", progressivoInvio=");
		sb.append(getProgressivoInvio());
		sb.append(", tipoRitenuta=");
		sb.append(getTipoRitenuta());
		sb.append(", importoRitenuta=");
		sb.append(getImportoRitenuta());
		sb.append(", aliquotaRitenuta=");
		sb.append(getAliquotaRitenuta());
		sb.append(", causalePagamento=");
		sb.append(getCausalePagamento());
		sb.append(", importoTotale=");
		sb.append(getImportoTotale());
		sb.append(", arrotondamento=");
		sb.append(getArrotondamento());
		sb.append(", causale=");
		sb.append(getCausale());
		sb.append(", articolo73=");
		sb.append(getArticolo73());
		sb.append(", bolloVirtuale=");
		sb.append(getBolloVirtuale());
		sb.append(", importoBolloVirtuale=");
		sb.append(getImportoBolloVirtuale());
		sb.append(", cassaPrevidenziale=");
		sb.append(getCassaPrevidenziale());
		sb.append(", aliquotaCassa=");
		sb.append(getAliquotaCassa());
		sb.append(", aliquotaIvaCassa=");
		sb.append(getAliquotaIvaCassa());
		sb.append(", ritenutaCassa=");
		sb.append(getRitenutaCassa());
		sb.append(", naturaCassa=");
		sb.append(getNaturaCassa());
		sb.append(", imponibileCassa=");
		sb.append(getImponibileCassa());
		sb.append(", importoContributoCassa=");
		sb.append(getImportoContributoCassa());
		sb.append(", tipoScontoMaggiorazione=");
		sb.append(getTipoScontoMaggiorazione());
		sb.append(", percentualeScontoMaggiorazione=");
		sb.append(getPercentualeScontoMaggiorazione());
		sb.append(", importoScontoMaggiorazione=");
		sb.append(getImportoScontoMaggiorazione());
		sb.append(", esigibilitaIva=");
		sb.append(getEsigibilitaIva());
		sb.append("}");

		return sb.toString();
	}

	@Override
	public String toXmlString() {
		StringBundler sb = new StringBundler(100);

		sb.append("<model><model-name>");
		sb.append("it.apuliait.model.Documento");
		sb.append("</model-name>");

		sb.append(
			"<column><column-name>documentoId</column-name><column-value><![CDATA[");
		sb.append(getDocumentoId());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>trasmittenteIDFK</column-name><column-value><![CDATA[");
		sb.append(getTrasmittenteIDFK());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>riceventeIDFK</column-name><column-value><![CDATA[");
		sb.append(getRiceventeIDFK());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>userId</column-name><column-value><![CDATA[");
		sb.append(getUserId());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>nomeDocumento</column-name><column-value><![CDATA[");
		sb.append(getNomeDocumento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>statoDocumento</column-name><column-value><![CDATA[");
		sb.append(getStatoDocumento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>tipoDocumento</column-name><column-value><![CDATA[");
		sb.append(getTipoDocumento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>divisa</column-name><column-value><![CDATA[");
		sb.append(getDivisa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>dataDocumento</column-name><column-value><![CDATA[");
		sb.append(getDataDocumento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>numeroDocumento</column-name><column-value><![CDATA[");
		sb.append(getNumeroDocumento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>progressivoInvio</column-name><column-value><![CDATA[");
		sb.append(getProgressivoInvio());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>tipoRitenuta</column-name><column-value><![CDATA[");
		sb.append(getTipoRitenuta());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>importoRitenuta</column-name><column-value><![CDATA[");
		sb.append(getImportoRitenuta());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>aliquotaRitenuta</column-name><column-value><![CDATA[");
		sb.append(getAliquotaRitenuta());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>causalePagamento</column-name><column-value><![CDATA[");
		sb.append(getCausalePagamento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>importoTotale</column-name><column-value><![CDATA[");
		sb.append(getImportoTotale());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>arrotondamento</column-name><column-value><![CDATA[");
		sb.append(getArrotondamento());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>causale</column-name><column-value><![CDATA[");
		sb.append(getCausale());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>articolo73</column-name><column-value><![CDATA[");
		sb.append(getArticolo73());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>bolloVirtuale</column-name><column-value><![CDATA[");
		sb.append(getBolloVirtuale());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>importoBolloVirtuale</column-name><column-value><![CDATA[");
		sb.append(getImportoBolloVirtuale());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>cassaPrevidenziale</column-name><column-value><![CDATA[");
		sb.append(getCassaPrevidenziale());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>aliquotaCassa</column-name><column-value><![CDATA[");
		sb.append(getAliquotaCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>aliquotaIvaCassa</column-name><column-value><![CDATA[");
		sb.append(getAliquotaIvaCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>ritenutaCassa</column-name><column-value><![CDATA[");
		sb.append(getRitenutaCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>naturaCassa</column-name><column-value><![CDATA[");
		sb.append(getNaturaCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>imponibileCassa</column-name><column-value><![CDATA[");
		sb.append(getImponibileCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>importoContributoCassa</column-name><column-value><![CDATA[");
		sb.append(getImportoContributoCassa());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>tipoScontoMaggiorazione</column-name><column-value><![CDATA[");
		sb.append(getTipoScontoMaggiorazione());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>percentualeScontoMaggiorazione</column-name><column-value><![CDATA[");
		sb.append(getPercentualeScontoMaggiorazione());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>importoScontoMaggiorazione</column-name><column-value><![CDATA[");
		sb.append(getImportoScontoMaggiorazione());
		sb.append("]]></column-value></column>");
		sb.append(
			"<column><column-name>esigibilitaIva</column-name><column-value><![CDATA[");
		sb.append(getEsigibilitaIva());
		sb.append("]]></column-value></column>");

		sb.append("</model>");

		return sb.toString();
	}

	private long _documentoId;
	private long _trasmittenteIDFK;
	private long _riceventeIDFK;
	private long _userId;
	private String _userUuid;
	private String _nomeDocumento;
	private String _statoDocumento;
	private String _tipoDocumento;
	private String _divisa;
	private String _dataDocumento;
	private String _numeroDocumento;
	private String _progressivoInvio;
	private String _tipoRitenuta;
	private String _importoRitenuta;
	private String _aliquotaRitenuta;
	private String _causalePagamento;
	private String _importoTotale;
	private String _arrotondamento;
	private String _causale;
	private String _articolo73;
	private String _bolloVirtuale;
	private String _importoBolloVirtuale;
	private String _cassaPrevidenziale;
	private String _aliquotaCassa;
	private String _aliquotaIvaCassa;
	private String _ritenutaCassa;
	private String _naturaCassa;
	private String _imponibileCassa;
	private String _importoContributoCassa;
	private String _tipoScontoMaggiorazione;
	private String _percentualeScontoMaggiorazione;
	private String _importoScontoMaggiorazione;
	private String _esigibilitaIva;
	private BaseModel<?> _documentoRemoteModel;
}